package com.sch.wanandroid.network

import com.sch.wanandroid.entity.*
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query

/**
 * Created by Sch.
 * Date: 2020/12/11
 * description:
 */
interface ApiService {
    /**
     *登录与注册
     */
    //登录
    @POST("user/login")
    suspend fun doLogin(
        @Query("username") userName: String,
        @Query("password") password: String,
    ): Result<Any?>

    //登出
    @GET("user/logout/json")
    suspend fun doLogOut(): Result<Any?>

    //注册
    @POST("user/register")
    suspend fun doRegister(
        @Query("username") userName: String,
        @Query("password") password: String,
        @Query("repassword") rePassword: String,
    ): Result<Any?>

    /**
     *积分
     */
    //获取个人积分
    @GET("lg/coin/userinfo/json")
    suspend fun getUserInfo(): Result<UserCoinInfo>

    //个人积分列表
    @GET("lg/coin/list/{pageNum}/json")
    suspend fun getCoinRecordListData(
        @Path("pageNum") pageNum: Int
    ): Result<PageEntity<CoinRecordBean>>

    //排行榜数据
    @GET("coin/rank/{pageNum}/json")
    suspend fun getRankListData(
        @Path("pageNum") pageNum: Int
    ): Result<PageEntity<RankBean>>

    /**
     *首页
     */
    @GET("banner/json")
    suspend fun getBanner(): Result<List<BannerBean>>

    //置顶文章
    @GET("article/top/json")
    suspend fun getTopArticle(): Result<List<ArticleBean>>

    //首页文章列表
    @GET("article/list/{pageNum}/json")
    suspend fun getArticleData(@Path("pageNum") pageNum: Int): Result<PageEntity<ArticleBean>>

    /**
     * 项目
     */
    //项目分类
    @GET("project/tree/json")
    suspend fun getProjectTreeData(): Result<List<TabTypeBean>>

    //项目下文章列表
    @GET("project/list/{pageNum}/json?")
    suspend fun getProjectListData(
        @Path("pageNum") pageNum: Int,
        @Query("cid") cid: Int
    ): Result<PageEntity<ArticleBean>>

    /**
     * 公众号
     */
    // 微信公众号列表
    @GET("wxarticle/chapters/json")
    suspend fun getWxArticleChaptersData(): Result<List<TabTypeBean>>

    //公众号历史数据
    @GET("wxarticle/list/{cid}/{pageNum}/json?")
    suspend fun getWxArticleListData(
        @Path("pageNum") pageNum: Int,
        @Path("cid") cid: Int
    ): Result<PageEntity<ArticleBean>>

    /**
     *广场
     */
    //广场数据列表
    @GET("user_article/list/{pageNum}/json?")
    suspend fun getUserArticleListData(
        @Path("pageNum") pageNum: Int,
    ): Result<PageEntity<ArticleBean>>

    // 自己分享的文章列表
    @GET("user/lg/private_articles/{pageNum}/json")
    suspend fun getMyArticleData(
        @Path("pageNum") pageNum: Int
    ): Result<MyCollectEntity<ArticleBean>>

    //添加分享
    @POST("lg/user_article/add/json")
    suspend fun addArticle(
        @Query("title") title: String,
        @Query("link") link: String
    ): Result<Any?>

    //删除分享
    @POST("lg/user_article/delete/{id}/json")
    suspend fun deleteArticle(
        @Path("id") id: Int
    ): Result<Any?>

    /**
     * 导航数据
     */
    @GET("navi/json")
    suspend fun getNavi(): Result<List<NavigationBean>>

    /**
     * 体系
     */
    //体系数据
    @GET("tree/json")
    suspend fun getTree(): Result<List<SystemBean>>

    //体系分类下文章列表
    @GET("article/list/{pageNum}/json?")
    suspend fun getArticleListDataByCid(
        @Path("pageNum") pageNum: Int,
        @Query("cid") cid: Int
    ): Result<PageEntity<ArticleBean>>

    //问答数据
    @GET("wenda/list/{pageNum}/json")
    suspend fun getWenDaListData(
        @Path("pageNum") pageNum: Int
    ): Result<PageEntity<ArticleBean>>

    /**
     *收藏
     */
    //收藏文章列表
    @GET("lg/collect/list/{pageNum}/json")
    suspend fun getCollectList(
        @Path("pageNum") pageNum: Int
    ): Result<PageEntity<CollectBean>>

    //收藏站内文章
    @POST("lg/collect/{id}/json")
    suspend fun collect(
        @Path("id") id: Int,
    ): Result<Any?>

    //收藏文章列表页面 添加收藏 收藏站外文章
    @POST("lg/collect/add/json")
    suspend fun addCollect(
        @Query("title") title: String,
        @Query("author") author: String,
        @Query("link") link: String
    ): Result<Any?>

    //文章列表页面 取消收藏
    @POST("lg/uncollect_originId/{id}/json")
    suspend fun unCollect(
        @Path("id") id: Int,
    ): Result<Any?>

    //收藏文章列表页面 取消收藏
    @POST("lg/uncollect/{id}/json")
    suspend fun unCollect(
        @Path("id") id: Int,
        @Query("originId") originId: Int
    ): Result<Any?>

    /**
     * 搜索
     */
    @POST("article/query/{pageNum}/json")
    suspend fun query(
        @Path("pageNum") pageNum: Int,
        @Query("k") k: String
    ): Result<PageEntity<ArticleBean>>

    @GET("https://gank.io/api/v2/data/category/Girl/type/Girl/page/{pageNum}/count/10")
    suspend fun getGirls(@Path("pageNum") pageNum: Int): RandomGirlEntity

    @GET("https://gank.io/api/v2/random/category/Girl/type/Girl/count/10")
    suspend fun getRandomGirls(): RandomGirlEntity

    @GET("https://gank.io/api/v2/post/{post_id}")
    suspend fun getGirlInfo(@Path("post_id") id: String): GirlInfo

    @GET("https://gank.io/api/v2/post/comments/{post_id}")
    suspend fun getGirlRemark(@Path("post_id") id: String): RemarkResultEntity
}